package com.kry.mbs.common;

/**
 * 异常枚举类型<p>
 * 说明：如果出现的异常是业务异常，可以在BUSINESS_ERROR(2000, "业务异常")，
 * 下面添加其他异常，但是必须保证error的key为2001到3000之间的数值，保证是业务异常的子数据。<p>
 * 例如:RDER_NOT_EXISTS(2003,  "订单不存在")，异常详细信息可为：查询异常[查询商户信息异常]
 * 
 * @author tany@shishike.com
 *
 */
public enum ErrorType {
	OK(0, "成功[OK]"),
	PARAM_DATA_ERROR(1000, "入参校验异常"),
	SIGN_ERROR(1001, "签名校验异常"),
	BUSINESS_ERROR(2000, "业务异常"),
	SYSTEM_ERROR(3000, "系统异常"),
	INTERNAL_INTERFACE_ERROR(3001,  "内部接口异常"),
	UNKNOW_ERROR(-1,    "未知异常[UNKNOWN ERROR]");
	
	private int key;
	private String value;

	/**
	 * @return the key
	 */
	public int getKey() {
		return key;
	}

	/**
	 * @param key
	 *            the key to set
	 */
	public void setKey(int key) {
		this.key = key;
	}

	/**
	 * @return the value
	 */
	public String getValue() {
		return value;
	}

	/**
	 * @param value
	 *            the value to set
	 */
	public void setValue(String value) {
		this.value = value;
	}

	private ErrorType(int key, String value) {
		this.key = key;
		this.value = value;
	}

	/**
	 * 获取异常类型
	 * 
	 * @author tany@shishike.com
	 * @2015年1月26日
	 * @param key
	 * @return
	 */
	public static ErrorType getResponseErrorType(int key) {
		ErrorType[] errors = ErrorType.values();
		for (ErrorType error : errors) {
			if (error.getKey() == key) {
				return error;
			}
		}
		return UNKNOW_ERROR;
	}
}